/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Sample UML2 to C++ generation
 *
 * Copyright (c) 2013 Alexander Diemand
 * All rights reserved.
 *
 * Author:     Alexander Diemand
 * Address:    Outerspace
 * Project:    Sample UML2 to C++ generation
 *
 * UML2 to C++ 
 * In easy steps from UML2 modeling to C++ coding.
 * What already works:
 * i)   generation of source and headers for enums and classes
 * ii)  the latter are: datatypes, interfaces and standard classes
 * iii) inherited static operations
 * iv)  isLeaf -> final, isReadOnly/isQuery -> const
 * What needs some work:
 * i)   templates are not yet supported
 * ii)  testing testing testing
 *
 * Repository: tbd
 * Generated:  2013-03-23 17:10:17
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#pragma once

#ifndef _dataModel_DATACONTAINER_H_
#define _dataModel_DATACONTAINER_H_


/**
 * @generated with Eclipse/Acceleo
 *  
 */

#include "dataModel/CommParams.hpp"

// Start of user code for includes
#include <string>
#include <algorithm>
#include <vector>
// End of user code

namespace dataModel
{

/**
 * The data type DataContainer
 * 
 * @author Eclipse/Acceleo - model2Cpp generator
 * @generated
 */
class DataContainer
{
	// Start of user code def of constructors/destructor
	public:

	// CTOR
	DataContainer(
		  const std::string &p_Addr
		, const std::string &p_City
		, const std::string &p_Name
		, const int p_Zip
		);

	// DTOR
	virtual ~DataContainer();

	public:
	DataContainer(const DataContainer &);
	DataContainer & operator=(const DataContainer &);
	bool operator==(const DataContainer &) const;

	void swap(DataContainer &) throw();

	// End of user code

	// * * * * *  F I E L D S  * * * * *
	protected:
	/**
	 * The attribute addr
	 * @generated
	 */
	const std::string addr;
	protected:
	/**
	 * The attribute city
	 * @generated
	 */
	const std::string city;
	protected:
	/**
	 * The attribute commParams
	 * @generated
	 */
	CommParams commParams;
	protected:
	/**
	 * The attribute name
	 * @generated
	 */
	const std::string name;
	protected:
	/**
	 * The attribute revenue
	 * @generated
	 */
	double revenue;
	protected:
	/**
	 * The attribute zip
	 * @generated
	 */
	const int zip;
	
	

	// * * * * *  O P E R A T I O N S  * * * * *
	private:
	
	
	protected:
	
	
	public:
	double getRevenue();
	void addSale(const double  amt);
	

	// * * * * *  A C C E S S O R S  * * * * *
	public:
	
	/**
	 * Accessors of the field #city
	 * @generated
	 */
	std::string getCity() const;
	
	
	/**
	 * Accessors of the field #addr
	 * @generated
	 */
	std::string getAddr() const;
	
	
	/**
	 * Accessors of the field #commParams
	 * @generated
	 */
	CommParams getCommParams() const;
	void setCommParams(const CommParams &p_CommParams);
	
	/**
	 * Accessors of the field #name
	 * @generated
	 */
	std::string getName() const;
	
	
	/**
	 * Accessors of the field #zip
	 * @generated
	 */
	int getZip() const;
	
	

}; // class


} // namespace dataModel

namespace std {

template <>
void swap (dataModel::DataContainer & o1, dataModel::DataContainer & o2) throw();

} // in std

#endif // _dataModel_DataContainer_H_
